package com.ssyt.yt1.day21;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

/**
 * 字符输出流：Writer
 * 
 * @author Administrator
 *
 */
public class WriterDemo {

	/**
	 * 效率较低，会频繁的向磁盘写入
	 * 
	 * @throws IOException
	 */
	@Deprecated
	public static void test1() throws IOException {
		// 1）使用File类打开一个文件
		File file = new File("d:/hello.txt");
		if (!file.exists()) {
			file.createNewFile();
		}
		// 2）通过字节流或字符流的子类，指定输出的位置
		Writer writer = null;
		try {
			writer = new FileWriter(file, true);
			// 3）进行读/写操作
			writer.write("hello world!");
		} finally {
			// 4）关闭输入/输出
			// Writer使用了缓冲区，所以我们最好在close之前调用一下flush方法
			writer.flush();
			// 注：IO操作属于资源操作，对于资源操作，最后必须关闭。
			if (writer != null) {
				writer.close();
			}
		}
		System.out.println("写入文件成功...");
	}

	/**
	 * 效率较高，使用到了缓冲区，到了一定值才会向磁盘写入！
	 * 
	 * @throws IOException
	 */
	public static void test2() throws IOException {
		// 1）使用File类打开一个文件
		File file = new File("d:/hello.txt");
		if (!file.exists()) {
			file.createNewFile();
		}
		// 2）通过字节流或字符流的子类，指定输出的位置
		BufferedWriter writer = null;
		try {
			writer = new BufferedWriter(new FileWriter(file, true));
			// 3）进行读/写操作
			writer.write("hello world!");
		} finally {
			// 4）关闭输入/输出
			// Writer使用了缓冲区，所以我们最好在close之前调用一下flush方法
			writer.flush();
			// 注：IO操作属于资源操作，对于资源操作，最后必须关闭。
			if (writer != null) {
				writer.close();
			}
		}
		System.out.println("写入文件成功...");
	}

	public static void main(String[] args) throws IOException {
		// test1();
		test2();
	}
}
